int prot,
unsigned long *mfn0)
{
- struct xen_machphys_mfn_list xmml;
privcmd_mmap_entry_t *entries;
unsigned long m2p_chunks, m2p_size;
xen_pfn_t *m2p;
m2p_size = M2P_SIZE(max_mfn);
m2p_chunks = M2P_CHUNKS(max_mfn);
- xmml.max_extents = m2p_chunks;
-
extent_start = calloc(m2p_chunks, sizeof(xen_pfn_t));
if ( !extent_start )
{
ERROR("failed to allocate space for m2p mfns");
goto err0;
}
- set_xen_guest_handle(xmml.extent_start, extent_start);
- if ( xc_memory_op(xch, XENMEM_machphys_mfn_list, &xmml) ||
- (xmml.nr_extents != m2p_chunks) )
+ if ( xc_machphys_mfn_list(xch, m2p_chunks, extent_start) )
{
PERROR("xc_get_m2p_mfns");
goto err1;
return domctl.u.getvcpuinfo.cpu_time;
}
+int xc_machphys_mfn_list(xc_interface *xch,
+ unsigned long max_extents,
+ xen_pfn_t *extent_start)
+{
+ int rc;
+ struct xen_machphys_mfn_list xmml = {
+ .max_extents = max_extents,
+ };
+ set_xen_guest_handle(xmml.extent_start, extent_start);
+ rc = xc_memory_op(xch, XENMEM_machphys_mfn_list, &xmml);
+ if (rc || xmml.nr_extents != max_extents)
+ return -1;
+ return 0;
+}
#ifndef __ia64__
int xc_get_pfn_list(xc_interface *xch,
int xc_sched_id(xc_interface *xch,
int *sched_id);
+int xc_machphys_mfn_list(xc_interface *xch,
+ unsigned long max_extents,
+ xen_pfn_t *extent_start);
+
typedef xen_sysctl_cpuinfo_t xc_cpuinfo_t;
int xc_getcpuinfo(xc_interface *xch, int max_cpus,
xc_cpuinfo_t *info, int *nr_cpus);